package co.com.desarrollo.pedidos.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import co.com.desarrollo.pedidos.dao.EstadoPedidoDAO;
import co.com.desarrollo.pedidos.entities.EstadoPedido;

@Repository("estadoPedidoDAO")
public class JpaEstadoPedidoDAOImpl implements EstadoPedidoDAO {

	@PersistenceContext
	private EntityManager entityManager;
	
	@Transactional
	public void delete(long estadoPedidoId) {
		entityManager.remove(entityManager.find(EstadoPedido.class, estadoPedidoId));
	}

	@Transactional(readOnly = true)
	public List<EstadoPedido> findAll() {
		return entityManager.createQuery("from EstadoPedido",EstadoPedido.class).getResultList();
	}

	@Transactional(readOnly = true)
	public EstadoPedido findById(long estadoPedidoId) {		
		return entityManager.find(EstadoPedido.class, estadoPedidoId);
	}

	@Transactional
	public EstadoPedido store(EstadoPedido estadoPedido) {
		return entityManager.merge(estadoPedido);
	}

	@Transactional(readOnly = true)
	public EstadoPedido findByName(String nombre) {
		return entityManager.createQuery("from EstadoPedido ep where ep.nombre = '"+nombre+"'", EstadoPedido.class).getSingleResult();
	}

}
